package chapter07._02_CatchException;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.UnknownHostException;

/**
 * @Description: 捕获多个异常
 * @LastDate: 2020/10/21
 */
public class Test02_CatchMultiple {

    public static void main(String[] args) {

    }

    public void readWithCatchMultipleExceptions(String fileName) {
        //一个try语句可以有多个catch子句 对不同异常做出不同处理
        try {
            var in = new FileInputStream(fileName);
            int data = -1;
            while ((data = in.read()) != -1) {
                //do something
            }
        } catch (FileNotFoundException | UnknownHostException e) {
            //当异常之间不存在子类关系 可以使用合并异常的操作 前提是处理异常的动作是一样的
            e.printStackTrace(); //打印堆栈轨迹
            //同时注意 捕获合并的异常时 e 是隐式final变量 不能改变
            //e = new FileNotFoundException(); //error Cannot assign a value to final variable 'e'
        } catch (IOException e) {
            e.getMessage(); //打印详细信息
            //e = new FileNotFoundException();// 可以重新赋值 改变异常
            //e.getClass().getName();//获取异常的实际类型
        }
    }
}
